//package com.easylinkin.linkappapi.lobar.config;
//
//import cn.hutool.core.date.DateUtil;
//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
//import com.easylinkin.linkappapi.lobar.entity.Group;
//import com.easylinkin.linkappapi.lobar.entity.GroupWarning;
//import com.easylinkin.linkappapi.lobar.entity.UserClock;
//import com.easylinkin.linkappapi.lobar.entity.UserProject;
//import com.easylinkin.linkappapi.lobar.entity.WarningConfig;
//import com.easylinkin.linkappapi.lobar.mapper.GroupMapper;
//import com.easylinkin.linkappapi.lobar.mapper.GroupWarningMapper;
//import com.easylinkin.linkappapi.lobar.mapper.UserClockMapper;
//import com.easylinkin.linkappapi.lobar.mapper.UserProjectMapper;
//import com.easylinkin.linkappapi.lobar.mapper.WarningConfigMapper;
//import java.text.SimpleDateFormat;
//import java.util.Date;
//import java.util.List;
//import java.util.Map;
//import java.util.Set;
//import java.util.stream.Collectors;
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.context.annotation.Configuration;
//
//
///**
// * @Description:
// * @Author:
// */
//@Configuration
//public class TaskDemo extends ConfigurerSchedulingDemo {
//
//  @Autowired
//  private GroupWarningMapper groupWarningMapper;
//
//  @Autowired
//  private WarningConfigMapper warningConfigMapper;
//
//  @Autowired
//  private GroupMapper groupMapper;
//
//  @Autowired
//  private UserProjectMapper userProjectMapper;
//
//  @Autowired
//  private UserClockMapper userClockMapper;
//
//  @Override
//  public Map<String, List<Group>> getGroups() {
//    //查询所有的在场班组
//    QueryWrapper<Group> groupQueryWrapper = new QueryWrapper<>();
//    groupQueryWrapper.eq("status_",1);
//    List<Group> groups = groupMapper.selectList(groupQueryWrapper);
//    Map<String, List<Group>> map = groups.stream()
//        .collect(Collectors.groupingBy(g -> g.getTenantId()));
//    System.out.println("获取一次==========================================");
//    return map;
//  }
//
//  @Override
//  public void taskService(List<Group> groups) {
//    //班组预警
//    WarningConfig warningConfig = getWarningConfig(groups.get(0).getTenantId());
//    groups.forEach(g ->{
//      //查询班组总人数
//      QueryWrapper<UserProject> queryWrapper = new QueryWrapper<>();
//      queryWrapper.eq("",g.getId())
//          .eq("status_",1);
//      Integer sum = userProjectMapper.selectCount(queryWrapper);
//      //查询按时打卡人数
//      Date checkTime = this.getDate(warningConfig.getGroupCheck());
//      List<UserClock> userClocks = userClockMapper.findOnUser(g,DateUtil.beginOfDay(new Date()),checkTime);
//      Set<String> userIds = userClocks.stream().map(u -> u.getUserId()).collect(Collectors.toSet());
//      //判断出勤率
//      float part = ((float) userIds.size()/(float) sum)*100;
//      if (part < warningConfig.getGroup()){
//        GroupWarning groupWarning = new GroupWarning();
//        groupWarning.setAttendance(warningConfig.getGroup());
//        groupWarning.setDetail(userIds.size()+"/"+sum);
//        groupWarning.setTenantId(g.getTenantId());
//        groupWarning.setGroupId(g.getId());
//        groupWarning.setWarningTime(checkTime);
//        groupWarning.setModifyTime(new Date());
//        groupWarning.setCreateTime(new Date());
//        groupWarningMapper.insert(groupWarning);
//      }
//    });
//  }
//
//  public Date getDate(String time){
//    String format = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
//    String s1 = format+" "+time;
//    return DateUtil.parse(s1, "yyyy-MM-dd HH:mm");
//  }
//
//  @Override
//  public String getCron(String tenantId) {
//    WarningConfig warningConfig = getWarningConfig(tenantId);
//    String cron = "0 fen shi * * ?";
//    String[] split = warningConfig.getGroupCheck().split(":");
//    String s = cron.replaceAll("fen", Integer.valueOf(split[1])+"").replaceAll("shi", split[0]);
//    return s;
//  }
//
//  private WarningConfig getWarningConfig(String tenantId) {
//    //查询预警设置
//    WarningConfig warningConfig;
//    List<WarningConfig> configs = warningConfigMapper.selectList(new QueryWrapper<>());
//    List<WarningConfig> list = configs.stream().filter(c -> tenantId.equals(c.getTenantId()))
//        .collect(Collectors.toList());
//    if (list.size() <1){
//      List<WarningConfig> defaultVal = configs.stream()
//          .filter(c -> StringUtils.isBlank(c.getTenantId())).collect(Collectors.toList());
//      warningConfig = defaultVal.get(0);
//    }else {
//      warningConfig = list.get(0);
//    }
//    return warningConfig;
//  }
//
//  public Integer getOpen() {
////        QueryWrapper<Scheduled> queryWrapper = new QueryWrapper<>();
////        queryWrapper.eq("name", "demo1");
////        Integer open = cronMapper.selectOne(queryWrapper).getOpen();
//      return 1;
//  }
//
//}